package cn.middle.basic.service;

import java.util.List;

import com.middle.common.base.service.BaseService;
import com.middle.common.result.Page;
import com.middle.common.result.UserInfo;

import cn.middle.basic.entity.SysMenu;
import cn.middle.basic.entity.SysRole;
import cn.middle.basic.entity.SysUser;

/**
 * 用户服务
 * @author KING
 *
 */
public interface SysUserService extends BaseService<SysUser> {
	
	/**
	 * 登陆
	 * @param username
	 * @param password
	 * @return
	 */
	public SysUser login(String username,String password);
	
	/**
	 * 检验登陆名称是否已被使用
	 * @param username
	 * @return
	 */
	public boolean checkLoginName(String username);
	
	/**
	 * 
	 * @param page 页码
	 * @param pageSize 每页数
 	 * @param realName  名字
	 * @param accountName 账号
	 * @param phone 手机号
	 * @param status 状态
	 * @return
	 */
	public Page<SysUser> listConditions(int page,int pageSize,String realName, String accountName,String phone,Byte status);
	
	
	/**
	 * 删除用户信息
	 * @param userId
	 */
	public void delete(Long userId);
	
	/**
	 * 新增用户及角色
	 * @param user
	 * @param roleId
	 */
	public void saveUserAndRole(SysUser user,List<Long> roleIds);
	/**
	 * 更改用户及角色
	 * @param user
	 * @param roleId
	 */
	public void updateUserAndRole(SysUser user,List<Long> roleIds);
	/**
	 * 用户信息
	 * @param userId
	 * @return
	 */
	public UserInfo<SysMenu,SysRole> getUserInfo(Long userId);
	
	
	/**
	 * 用户与角色关联
	 * @param userId
	 * @param roleIds
	 */
	public void associationUserRoles(Long userId,List<Long> roleIds);
	
	
	/**
	 * 获取该角色ID关联的的用户集
	 * @param roleId
	 * @return
	 */
	public List<SysUser> usersByRoleId(Long roleId);

}
